/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package modelo;

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JLabel;

/**
 *
 * @author sebastian
 */
public class Caldera implements Runnable{
    
    private float temperatura;
    private float potencia;
    private float cPerdidaCalor;
    private float tempAmbiente;
    private Tanque tanque;
    private int velocidad;
    
    private JLabel lblTemp;

    public Caldera(float temperatura, float cPerdidaCalor, float tempAmbiente, JLabel lblTemp, Tanque tanque) {
        this.temperatura = temperatura;
        this.cPerdidaCalor = cPerdidaCalor;
        this.tempAmbiente = tempAmbiente;
        this.lblTemp = lblTemp;
        this.tanque = tanque;
        this.velocidad = 100;
        this.calcularPotencia();
    }

    public float getTemperatura() {
        return temperatura;
    }

    public void setTemperatura(float temperatura) {
        this.temperatura = temperatura;
    }

    public float getPotencia() {
        return potencia;
    }

    public void setPotencia(float potencia) {
        this.potencia = potencia;
    }

    public float getcPerdidaCalor() {
        return cPerdidaCalor;
    }

    public void setcPerdidaCalor(float cPerdidaCalor) {
        this.cPerdidaCalor = cPerdidaCalor;
    }

    public float getTempAmbiente() {
        return tempAmbiente;
    }

    public void setTempAmbiente(float tempAmbiente) {
        this.tempAmbiente = tempAmbiente;
    }
    
    public void cambiarTemperatura(float cambioTemp, int tipo){
        if (tipo == 1) {
            this.temperatura += cambioTemp;
            if(this.temperatura>1500)
            {this.temperatura=1500; }
        }
        else{
            this.temperatura -= cambioTemp;
            
        }
        this.lblTemp.setText(String.valueOf(this.temperatura) + "ºC");
        this.calcularPotencia();
    }
    
    public void calcularPotencia(){
        this.potencia = this.cPerdidaCalor * (this.temperatura - this.tempAmbiente);
    }
    
    public void setVelocidad(int velocidad){
        this.velocidad = 1000/velocidad;
    }

    @Override
    public void run() {
        //System.out.println("djfjdf");
        while(true){
            System.out.println(tanque.getTemperatura());
            if (this.tanque.getNivelActual() > 0 && this.tanque.getTemperatura()<100) {
                cambiarTemperatura(60, 1);
                this.tanque.recalcularTemperatura(this.potencia);
            }
            try {
                Thread.sleep(this.velocidad);
            } catch (InterruptedException ex) {
                Logger.getLogger(Caldera.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
}
